package web.suzy.oj.validator;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import web.suzy.oj.annotation.AccessEnum;
import web.suzy.oj.config.NacosSwitchConfig;
import web.suzy.oj.config.SwitchConfig;
import web.suzy.oj.exception.AccessException;

/**
 * YangSuzy 软件工作室
 * 类名: AccessValidator
 * 描述: 访问验证器
 * 功能: 验证访问的功能是否可用
 *
 * @author YangSuzy
 * Date: 2022/12/9 16:33
 */
@Component
public class AccessValidator {
    @Autowired
    private NacosSwitchConfig nacosSwitchConfig;

    public void validateAccess(AccessEnum accessEnum) throws AccessException {
        SwitchConfig switchConfig = nacosSwitchConfig.getSwitchConfig();
        switch (accessEnum) {
            case PUBLIC_DISCUSSION:
                if (!switchConfig.getOpenPublicDiscussion()) {
                    throw new AccessException("网站当前未开启公开讨论区的功能，不可访问！");
                }
                break;
            case PUBLIC_JUDGE:
                if (!switchConfig.getOpenPublicJudge()) {
                    throw new AccessException("网站当前未开启题目评测的功能，禁止提交或调试！");
                }
                break;
            default:
        }
    }
}
